#ifndef __SNOOPRESPONSE_H__
#define __SNOOPRESPONSE_H__

#include "base/Response.h"
#include "base/simtypes.h"
#include "base/SnoopACK.h"
#include "util/Logger.h"

class SnoopResponse : public Response {
  public:
    NEW_DELETE_OPERATORS_H(SnoopResponse,Response);
    SnoopResponse (Request* req, uint size, SnoopACK* _ack) :
        Response(req, size),
        ack(_ack)
    {
        ASSERT(ack == NULL || ack->getFlag() != RESPONSE_NO_SNOOP_RESPONSE);
    }
    
    ~SnoopResponse () {
        delete ack;
    }

    virtual char const* toString () const;

    SnoopACK* getSnoopACK () {
        return ack;
    }

    void setSnoopACK (SnoopACK* _ack) {
        ack = _ack;
    }

  private:
    SnoopACK* ack;
};

#endif // __SNOOPRESPONSE_H__
